当前位置:  开发笔记 > 编程语言 > 正文

什么是这些^ M一直出现在我的emacs文件中?

如何解决《什么是这些^M一直出现在我的emacs文件中?》经验,为你挑选了8个好方法。

所以我认为它可能与textmate有关,但是我们在一个小团队中工作,并且在git中存在几个相同文件的完整文件冲突的问题,因为一个分支的每一行都附加了^ M.

这个神秘的^M角色应该做什么,它可能来自哪里?

我们的开发人员在Windows/Mac上使用emacs,在Mac上使用TextMate,在Mac上使用coda,偶尔使用wp-admin文本编辑器.

任何人都有这个问题源于其中一个?



1> Josh Lee..:

在git-config中,设置core.autocrlftrue使git自动为您的平台正确转换行结尾,例如运行此命令进行全局设置:

git config --global core.autocrlf true


如果你的平台是Windows,这个答案**仅适用**!如果你在Mac/Linux上工作,"true"应该成为"输入"!请参阅https://help.github.com/articles/dealing-with-line-endings和此处:http://stackoverflow.com/questions/9225599/should-git-change-the-ending-of-line-controlm -or-M-在最端部的最第一-1-
我认为这是最好的答案,因为它在OP的背景下回答了问题,即git.

2> Broam..:

有人没有正确转换他们的行尾字符.

我认为这是Windows用户,因为他们喜欢他们的CRLF.Unix喜欢LF和Mac喜欢CR,直到它以Unix方式显示.


@Otherside:仅在"我们想模仿打字机"的意义上更合乎逻辑.我无法理解为什么它甚至更加有用.
我认为Windows方式更符合逻辑,因为术语CR和LF来自打字机的时代.您必须同时执行这两项操作:a Carriage返回以获取行的开头的输入点,并使用换行符向下滚动一行.打字机上的Mac OS Classic方式(CR)只会覆盖同一条线.打字机上的Unix方式(LF)会输出交错的文本,直到达到页面的整个宽度.:)
@Otherside为什么当用一个字符表示时,你能代表两个字符?
为了澄清:Mac使用CR直到版本10(OS X),现在它使用LF.
@Matthew G:只要我们很多人同意,一切都可以用一个角色来表示.这是否意味着我们应该?我们可以在没有标点符号,大写字母和新行的每个句子的情况下输入我们所有的消息,每个人都会理解它.这是否意味着我们应该?这不是"因为我们可以做某事".也就是说,我也更喜欢LF.
@Otherside在1958年更合乎逻辑.它不是1958年.

3> Sinan Ünür..:

^M0x0d,即回车字符.如果您的显示器看起来像

line 1^M
line 2^M

然后该文件必须来自Windows,因为Windows上的标准换行序列是CR LF(0x0d 0x0a)而标准换行序列仅由LFUnices组成.

如果文件来自Mac OS 9或更早版本的系统,您会看到它

line 1^Mline 2^M

因为回车后没有换行.



4> 小智..:

要使^ M在git中消失,请键入:

git config --global core.whitespace cr-at-eol

致谢:https: //lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/


这只会让^ M在使用git diff时从显示中消失,但它仍然存在

5> Parappa..:

它们与DOS风格的行结尾和Unix风格之间的区别有关.查看维基百科文章.您可以找到dos2unix工具来帮助,或者只是编写一个小脚本来自行修复它们.

编辑:我在这里找到了以下Python示例代码:

string.replace( str, '\r', '' )


在Emacs中,这将是 M- :( replace-string"\ r""").

6> 小智..:

而不是查询替换你也可以使用Mx delete-trailing-whitespace



7> CookieMonste..:

我在Mac OS上使用Android Studio(JetBrains IntelliJ IDEA),我的问题是^ M开始出现在GitHub的 pull请求中的某些文件中。对我有用的是更改文件的行分隔符。

在编辑器中打开所需的文件,然后依次转到“ 文件”和“ 行分隔符”,然后 为您选择最佳选项 (对我而言,这是LF-Unix和OS X(\ n)

根据下一篇文章,此问题是操作系统之间行尾混淆的结果:http : //jonathonstaff.com/blog/issues-with-line-endings/

您可以在这里找到更多信息:https : //www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48



8> Jakub Narębs..:

将以下~/.emacs物品放入您的(或等价物)中

(defun dos2unix ()
  "Replace DOS eolns CR LF with Unix eolns CR"
  (interactive)
    (goto-char (point-min))
      (while (search-forward "\r" nil t) (replace-match "")))

然后您就可以简单地使用M-x dos2unix

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有